function answer = tellClass(sample, params, labels, exhaustiveMode=false)
    
    classNo = size(unique(labels),1);
    clsfrsNo = size(params,1);
    allClsfrsNo = classNo+classNo*(classNo-1)/2;
 
    
    sample = normalizeData(sample,params);

    candidates = [];
    for(i=1:size(unique(labels),1))
        #either we generate a real ranking or just leave it to h2h
        if(clsfrsNo==classNo || clsfrsNo==allClsfrsNo)
            candidates(i,:)=[i,hypothesis(sample,params(i,:))];
        else
            candidates(i,:)=[i,1/classNo];
        endif;
    end;

    candidates( candidates(:,2)<max(candidates(:,2))*0.5 , : )=[];
    candidates = sortrows(candidates,-2);
    
    if(clsfrsNo>classNo)
        if(clsfrsNo==allClsfrsNo-classNo)
            #make backwards compatible
            params=[zeros(classNo,size(params,2));params];        
        endif;         
        if(!exhaustiveMode)
            #lazy way
            while(size(candidates,1)>1)
                paramsInd = getParamsIndex(size(unique(labels),1),candidates(1,1),candidates(2,1));
                verdict = hypothesis(sample, params(paramsInd,:));
                if(verdict<0.5)
                    candidates(1,:)=[];        
                else
                    candidates(2,:)=[];
                endif;    
            endwhile;
        else    
            #create a league
            for(i=1:size(candidates,1)-1)
                for(j=i+1:size(candidates,1))
                    paramsInd = getParamsIndex(size(unique(labels),1),candidates(i,1),candidates(j,1));
                    verdict = hypothesis(sample, params(paramsInd,:));
                    candidates(i,2)+=verdict;
                    candidates(j,2)+=(1-verdict);
                endfor;
            endfor;
            candidates = sortrows(candidates,-2);
            candidates = [candidates(1,:)];
        endif;
    endif;    

    if(size(candidates,1)==0)
        printf("no candidates!");
    endif;

    if(size(labels,1)==0)
        printf("no labels...!");
    endif;

    if(size(candidates,1)>1)
        #like this?
        answer=classNo;
    else
        answer=labels(candidates(1,1));
    endif;
end;
